package com.bdqn.Di1Zhan;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class AccessPersonMethods {
    public static void main(String[] args) {
        try {
            Class clz = Class.forName("reflect.entity.person");

            Method getAge = clz.getDeclaredMethod("getAge" , null);

            getAge.setAccessible(true);

            Object returnAge = getAge.invoke(null , null);
            System.out.println("年龄是："+returnAge);

            Object person = clz.newInstance();

            Method silentMethod = clz.getDeclaredMethod("silentMethod",null);

            silentMethod.setAccessible(true);

            silentMethod.invoke(person , null);

            Method setName = clz.getDeclaredMethod("setName" , String.class);

            setName.invoke(person , "New Person");

            Object returnName = clz.getDeclaredMethod("getName").invoke(person);

            System.out.println("刚才设置的name是："+returnName);
        }catch (InstantiationException e){
            e.printStackTrace();
        }catch (IllegalAccessException e){
            e.printStackTrace();
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }catch (SecurityException e){
            e.printStackTrace();
        }catch (NoSuchMethodException e){
            e.printStackTrace();
        }catch (IllegalArgumentException e){
            e.printStackTrace();
        }catch (InvocationTargetException e){
            e.printStackTrace();
        }
    }
}
